Network FirewallのアラートログをS3に記録して、アラートログが記録されたことをEventBridgeで通知する
はじめに
こんにちは。大阪オフィスの林です。
Network Firewallでは、検出したアラートログやフローログをS3、CloudWatch Logs、Kinesis Data Firehoseに転送することが出来ます。
今回はS3にアラートログが書き込まれたタイミングで管理者に通知を行うという検証を行う機会がありましたので内容をまとめておきたいと思います。以下が今回やることのイメージです。
今回は、Network Firewall自体の設定は済みである前提で進めていきます。
Network Firewallの基本的な設定や解説については下記エントリを参照ください。
やってみた
SNSの準備
まずは通知用のSNSを作成します。シンプルにトピック1つと、メールアドレスを紐付けたサブスクリプションを作成しておきます。
S3バケットの準備
Network Firewallのログ転送先として使用するS3バケットを作成します。
今回は、S3のPutEventをEventBridgeで拾ってSNSで通知を行いますので、EventBridge通知の設定を「オン」にしておきます。
EventBridgeの準備
続いてEventBridgeの設定です。
任意の名前を入力し「イベントパターンを持つルール」が選択されている状態で「次へ」を選択します。
イベントパターンに下記JSONを入力します。
Network Firewallでは、アラートログとフローログに対して別々のログ転送先を設定することも出来るのですが、同じバケットにログを転送するケースを想定し、下記JSON内のprefix
でアラートログのプレフィックスに該当するオブジェクトのみをイベントパターンとしてマッチさせるようにしています。
{ "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "object": { "key": [{ "prefix": "AWSLogs/123456789012/network-firewall/alert/" }] } } }
ターゲットの設定で「AWSのサービス」-「SNSトピック」-「冒頭で作成したSNSトピック」を選択し「追加設定」を開きます。
メール受信時に見やすいようなデータに加工する為、「ターゲット入力を設定」から「入力トランスフォーマー」を選択し「入力トランスフォーマーを設定」を選択します。
ターゲット入力トランスフォーマーの「入力パス」に以下のJSONを入力します。※要件など必要に応じて内容は変更してください。
{ "AWS_Account": "$.account", "Time": "$.time", "object": "$.detail.object.key" }
「テンプレート」に実際にメール通知された際に表示される文章やデータを指定し「確認」を選択します。※要件など必要に応じて内容は変更してください。
"Network Firewallでアラートを検出しました。" "下記オブジェクトのログを確認してください" "[ Account ] <AWS_Account>" "[ UserName ] <Time> +09:00" "[ Object ] <object>"
Network Firewallの設定
Network Firewallは既に作成済みであることを前提とします。「ファイアウォールの詳細」を選択します。
「ログタイプ」で「Alert」を選択し、アラートログの送信先に「S3」「作成したS3バケット」を指定し「保存」を選択します。
動作確認
今回特定のドメインに対するアクセスを拒否するルールを追加して検証しています。
まとめ
現状、Network FirewallとEventBridgeは統合されていないようなので、よくあるGuard DutyやSecurity Hubのような、いわゆるいつもの感じの通知の仕組みを入れるにはちょいとひと手間いりそうです。Network FirewallとEventBridge統合など今後のアップデートに期待したいと思います!
以上、大阪オフィスの林がお送りしました!